home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / vidhrdw / 88games.c < prev    next >
C/C++ Source or Header  |  2000-03-29  |  3KB  |  135 lines

  1. #include "driver.h"
  2. #include "vidhrdw/konamiic.h"
  3.  
  4.  
  5. int k88games_priority;
  6.  
  7. static int layer_colorbase[3],sprite_colorbase,zoom_colorbase;
  8.  
  9.  
  10.  
  11. /***************************************************************************
  12.  
  13.   Callbacks for the K052109
  14.  
  15. ***************************************************************************/
  16.  
  17. static void tile_callback(int layer,int bank,int *code,int *color)
  18. {
  19.     *code |= ((*color & 0x0f) << 8) | (bank << 12);
  20.     *color = layer_colorbase[layer] + ((*color & 0xf0) >> 4);
  21. }
  22.  
  23.  
  24. /***************************************************************************
  25.  
  26.   Callbacks for the K051960
  27.  
  28. ***************************************************************************/
  29.  
  30. static void sprite_callback(int *code,int *color,int *priority)
  31. {
  32.     *priority = (*color & 0x20) >> 5;    /* ??? */
  33.     *color = sprite_colorbase + (*color & 0x0f);
  34. }
  35.  
  36.  
  37. /***************************************************************************
  38.  
  39.   Callbacks for the K051316
  40.  
  41. ***************************************************************************/
  42.  
  43. static void zoom_callback(int *code,int *color)
  44. {
  45.     tile_info.flags = (*color & 0x40) ? TILE_FLIPX : 0;
  46.     *code |= ((*color & 0x07) << 8);
  47.     *color = zoom_colorbase + ((*color & 0x38) >> 3) + ((*color & 0x80) >> 4);
  48. }
  49.  
  50.  
  51. /***************************************************************************
  52.  
  53.     Start the video hardware emulation.
  54.  
  55. ***************************************************************************/
  56.  
  57. int k88games_vh_start(void)
  58. {
  59.     layer_colorbase[0] = 64;
  60.     layer_colorbase[1] = 0;
  61.     layer_colorbase[2] = 16;
  62.     sprite_colorbase = 32;
  63.     zoom_colorbase = 48;
  64.     if (K052109_vh_start(REGION_GFX1,NORMAL_PLANE_ORDER,tile_callback))
  65.     {
  66.         return 1;
  67.     }
  68.     if (K051960_vh_start(REGION_GFX2,NORMAL_PLANE_ORDER,sprite_callback))
  69.     {
  70.         K052109_vh_stop();
  71.         return 1;
  72.     }
  73.     if (K051316_vh_start_0(REGION_GFX3,4,zoom_callback))
  74.     {
  75.         K052109_vh_stop();
  76.         K051960_vh_stop();
  77.         return 1;
  78.     }
  79.  
  80.     return 0;
  81. }
  82.  
  83. void k88games_vh_stop(void)
  84. {
  85.     K052109_vh_stop();
  86.     K051960_vh_stop();
  87.     K051316_vh_stop_0();
  88. }
  89.  
  90.  
  91.  
  92. /***************************************************************************
  93.  
  94.   Display refresh
  95.  
  96. ***************************************************************************/
  97.  
  98. void k88games_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh)
  99. {
  100.     int i;
  101.  
  102.  
  103.     K052109_tilemap_update();
  104.     K051316_tilemap_update_0();
  105.  
  106.     palette_init_used_colors();
  107.     K051960_mark_sprites_colors();
  108.     /* set back pen for the zoom layer */
  109.     for (i = 0;i < 16;i++)
  110.         palette_used_colors[(zoom_colorbase + i) * 16] = PALETTE_COLOR_TRANSPARENT;
  111.     if (palette_recalc())
  112.         tilemap_mark_all_pixels_dirty(ALL_TILEMAPS);
  113.  
  114.     tilemap_render(ALL_TILEMAPS);
  115.  
  116.     if (k88games_priority)
  117.     {
  118.         K052109_tilemap_draw(bitmap,0,TILEMAP_IGNORE_TRANSPARENCY);
  119.         K051960_sprites_draw(bitmap,1,1);
  120.         K052109_tilemap_draw(bitmap,2,0);
  121.         K052109_tilemap_draw(bitmap,1,0);
  122.         K051960_sprites_draw(bitmap,0,0);
  123.         K051316_zoom_draw_0(bitmap,0);
  124.     }
  125.     else
  126.     {
  127.         K052109_tilemap_draw(bitmap,2,TILEMAP_IGNORE_TRANSPARENCY);
  128.         K051316_zoom_draw_0(bitmap,0);
  129.         K051960_sprites_draw(bitmap,0,0);
  130.         K052109_tilemap_draw(bitmap,1,0);
  131.         K051960_sprites_draw(bitmap,1,1);
  132.         K052109_tilemap_draw(bitmap,0,0);
  133.     }
  134. }
  135.